package com.lhz.framework.security.annotation;

import com.lhz.common.constant.LimitLockType;

import java.lang.annotation.*;

/**
 * token检测
 *
 * @Author:
 * @Version: 1.0
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RateLimiter {

    /**
     * 限流的类型,lockType为空的话 就是url作为key
     * token
     * ip
     * entityParam
     * methodParam
     *
     * @return
     */
    LimitLockType lockType() default LimitLockType.URL;

    /**
     * 限流的方法中，key所在取那个实体的字段的值作为key(要求字段值不能为空)
     * 如果lockType为methodParam，必填
     *
     * @return
     */
    String paramName() default "";

    /**
     * 限流的方法中，key所在参数的位置,索引从0开始
     * 如果lockType为methodParam，必填
     *
     * @return
     */
    int keyNum() default -1;

    int period() default 1;  //限流时间周期，默认 1S

    int count() default 10; //周期内限制次数，默认  10次

}
